// app.js
import {config} from '../../lib/config'
let QQMapWX = require("../../lib/qqmap-wx-jssdk.min.js");
let qqmapsdk = new QQMapWX({
  key:config.key
})

Page({
  data: {
    scrollTop:undefined,
    isBack:false,
    currentAddress:'',
    province:'',
    // 附近活动的页面

    // 热门活动数据类表
    hotList:[],

    nearbyList:[],

    // 最新的活动
    newList:[],


    // 还有更多吗
    getNewMore:true,
    getHotMore:true,


    // 提醒活动参加
    reminderJoinCount:0,

    reminderPublishCount:0
  },

  onShow(){
    // 获取最新活动
    this.getNewList(4)
    // 获取热门活动
    this.getHotList(4);
    // 置位
    this.setData({
      getNewMore:true,
      getHotMore:true
    })
  },

  onLoad(){

    const that = this;

    wx.cloud.callFunction({
      name:'updateStatus',
    })
    
    if(wx.getStorageSync('isLogin')){
      this.reminderJoinPeople();
      this.reminderPublishPeople();
    }
    // 一开始进来就要获取用户地址
    wx.showModal({
      title: '提示',
      content: '是否获取位置信息以便提供附近的活动数据',
      showCancel: true,
      cancelText: '取消',
      cancelColor: '#000000',
      confirmText: '确定',
      confirmColor: '#3CC51F',
      success: (result) => {
        if (result.confirm) {
          that.handleAddress();
        }
      },
    });

  },
  // 返回顶部
  returnBack(){
    this.setData({
      scrollTop:0
    })
  },

  // 滚动时触发
  handleScroll(e){
    // console.log('-----------------',e.detail.scrollTop);
    if(e.detail.scrollTop>20){
      this.setData({
        isBack:true
      })
    }else{
      this.setData({
        isBack:false
      })
    }
  },

  // 引入腾讯地图进行定位
  handleAddress(){
    // console.log('获取地图，不需要进行页面的跳转');
    wx.showLoading({
      title:'获取地址中',
      mask: true
    });
      
    const that = this;

    wx.getLocation({
      type: 'gcj02',
      altitude: false,//获取高度信息
      success: (result) => {

        // 根据经纬度获取当前的文字地址描述
        qqmapsdk.reverseGeocoder({
          location:{
            longitude:result.longitude,
            latitude:result.latitude
          },
          success:(res)=>{
            // console.log("看看返回的是什么地市",res);
            const address = res.result.formatted_addresses.recommend;
            const {province,city,district} = res.result.address_component
            wx.hideLoading();
            if(res.status === 0){
              that.setData({
                currentAddress:address,
                province:province+city+district
              });
              // 获取到位置信息 调用云函数
              wx.cloud.callFunction({
                name:'nearBy',
                data:{
                  province:province+city+district,
                  detailAddress:address
                },
                success:val=>{
                  // console.log('==================',val.result.data);
                  that.setData({
                    nearbyList:val.result.data
                  })
                }
              })
            }
          },
        })
      },
      fail: (err) => {
        wx.hideLoading();
        wx.showModal({
          title: '提示',
          content: '出错啦'+err.errMsg,
          showCancel: false,
          confirmText: '确定',
          confirmColor: '#3CC51F',
        });
      },
    });
      
  },
  // 跳转到搜索页面
  gotoSearch(){
    // console.log('跳转到搜索页面');
    wx.navigateTo({
      url: '/pages/search/search'
    });
  },
  // 跳转到活动详情页
  // 跳转活动详情页面的时候则会表示已阅一次
  gotoDetail(e){
    // console.log('跳转到活动详情页',e);
    const item = e.currentTarget.dataset.item;
    // 将数据上传到云数据库
    wx.cloud.callFunction({
      name:'upHotList',
      data:{
        item
      },
      success:res=>{
        console.log('热门活动',res)
      }
    })
    wx.navigateTo({
      url: `/pages/detail/detail?id=${item._id}`
    });

  },

  // 获取更多数据
  getMore(e){
    console.log('获取更多数据',e);
    wx.showLoading({
      title: '数据加载中...',
      mask: true,
    });
      
    // 需要提供页数  nearby 表示是附近的活动 hot表示最热的活动
    const TYPE = e.currentTarget.id;
    if(TYPE === 'hot'){
      // 热门活动
      this.getHotList(0);
      this.setData({
        getHotMore:false
      })
    }else{
      this.getNewList(0);
      this.setData({
        getNewMore:false
      })
    }
  },


  // 获取热门活动的数据列表
  getHotList(num){
    const that = this;
    const COUNT = num;// 限制4条
    wx.cloud.callFunction({
      name:'downHotList',
      data:{
        COUNT
      },
      success:res=>{
        // console.log('获取热门活动数据类表',res);
        that.setData({
          hotList:res.result.data
        })
        wx.hideLoading();
      }
    })
  },

  // 获取最新活动
  getNewList(num){
    const that = this;
    // 最新发布的活动
    const COUNT = num;// 限制4条
    wx.cloud.callFunction({
      name:'downIndex',
      data:{
        COUNT
      },
      success:res=>{
        // console.log('获取最新的数据',res);
        that.setData({
          newList:res.result.list
        })
        wx.hideLoading();
          
      }
    });
  },


  // 首页进行加载的时候，就需要判断有无活动需要进行提示
  async reminderJoinPeople(){
    let {result} = await wx.cloud.callFunction({
      name:'reminderJoin'
    })
    console.log('提醒报名者参加活动',result);
    this.setData({
      reminderJoinCount:result.total
    })
    if(result.total!=0){
      wx.showModal({
        title: '提示',
        content: `您有${result.total}条活动即将进行，请合理安排时间按时参加~`,
        showCancel: false,
        confirmText: '知道了',
        confirmColor: '#3CC51F',
      });
    }
  },

  async reminderPublishPeople(){
    let {result} = await wx.cloud.callFunction({
      name:'reminderPublish'
    })
    console.log('提醒发布者导出名单',result);
    this.setData({
      reminderPublishCount:result.total
    })

    if(result.total!=0){
      wx.showModal({
        title: '提示',
        content: `您有${result.total}条活动待举办，可以前往个人中心查看报名表单`,
        showCancel: false,
        confirmText: '知道了',
        confirmColor: '#3CC51F',
      });
    }
  } 


})
